package com.mg.mgchat.service;

//import org.apache.http.HttpResponse;
//import org.apache.http.client.methods.HttpPost;
//import org.apache.http.entity.StringEntity;
//import org.apache.http.impl.client.CloseableHttpClient;
//import org.apache.http.impl.client.HttpClients;
//import org.apache.http.util.EntityUtils;

import okhttp3.*;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.stereotype.Service;

import java.io.IOException;

@Service
public class ErnieSpeedService {


    public static final String API_KEY = "yo76sSrsuYFcuFmrg9Tsdz6y";
    public static final String SECRET_KEY = "UawrTmlHY6bG8T1ZNjZC6jA6X2AFgXbA";

    static final OkHttpClient HTTP_CLIENT = new OkHttpClient().newBuilder().build();

    static  final  String orgDescStr="湖北长江电影集团是一家致力于电影产业的企业，涵盖了电影的制作、发行和放映等多个环节。关于湖北长江电影集团放映公益电影的情况，这是一个值得赞赏的举措。在社会责任感的驱使下，许多电影公司都会参与公益电影的放映，旨在为广大观众提供有益的文化内容，同时促进社会发展。湖北长江电影集团可能会定期或不定期地参与放映公益电影，这可能包括安全教育、文化传承、环境保护等主题的电影。这些公益电影的放映可能是在电影院、社区、学校或其他公共场所进行，以最大限度地覆盖更多的观众。要了解湖北长江电影集团具体的公益电影放映情况，建议访问其官方网站或关注其社交媒体账号，以获取最新的信息。同时，也可以关注当地的新闻资讯，以了解更多的放映详情。";

    public JSONObject askQuestion(String question) throws Exception {
        MediaType mediaType = MediaType.parse("application/json");
        JSONObject r = new JSONObject();
        //declare json object array
        JSONArray jsonArray = new JSONArray();
        JSONObject jsonObject1 = new JSONObject();
        jsonObject1.put("role", "user");
        jsonObject1.put("content", "湖北长江电影集团放映公益电影");
        jsonArray.put(jsonObject1);
        JSONObject jsonObject2 = new JSONObject();
        jsonObject2.put("role", "assistant");
        jsonObject2.put("content", orgDescStr);
        jsonArray.put(jsonObject2);
        r.put("orgDesc", orgDescStr);


        JSONObject jsonObject3 = new JSONObject();
        jsonObject3.put("role", "user");
        jsonObject3.put("content", "电影:" + question);
        jsonArray.put(jsonObject3);


        JSONObject jsonObject_q = new JSONObject();
        jsonObject_q.put("messages", jsonArray);

        int i = 0;
        while (i <= 2) {
            i++;
            String json_question = jsonObject_q.toString();
            RequestBody body = RequestBody.create(mediaType, json_question);

            Request request = new Request.Builder()
                    .url("https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-speed-128k?access_token=" + getAccessToken())
                    .method("POST", body)
                    .addHeader("Content-Type", "application/json")
                    .build();
            Response response = HTTP_CLIENT.newCall(request).execute();

            String s = response.body().string();
            JSONObject jsonObject_r1 = new JSONObject(s);
            String s1 = jsonObject_r1.getString("result");
            if (i == 1) {
                r.put("filmDesc", s1);  // film desc save to r  json object
                JSONObject jsonObject4 = new JSONObject();
                jsonObject4.put("role", "assistant");
                jsonObject4.put("content", s1);  // film desc
                jsonArray.put(jsonObject4);     // add to json array ,to prepare for next query
                JSONObject jsonObject5 = new JSONObject();   // prepare for next query ,user query
                jsonObject5.put("role", "user");
                jsonObject5.put("content", "电影:" + question + "的主要演员有哪些,他们的演技怎么样，都演过什么电影");
                jsonArray.put(jsonObject5);
            } else if (i == 2) {
                r.put("performerDesc", s1);  // film desc save to r  json object
            }
        }
        return r;
    }


    /**
     * 从用户的AK，SK生成鉴权签名（Access Token）
     *
     * @return 鉴权签名（Access Token）
     * @throws IOException IO异常
     */


    static String getAccessToken() throws IOException {
        MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
        RequestBody body = RequestBody.create(mediaType, "grant_type=client_credentials&client_id=" + API_KEY
                + "&client_secret=" + SECRET_KEY);
        Request request = new Request.Builder()
                .url("https://aip.baidubce.com/oauth/2.0/token")
                .method("POST", body)
                .addHeader("Content-Type", "application/x-www-form-urlencoded")
                .build();
        Response response = HTTP_CLIENT.newCall(request).execute();
        return new JSONObject(response.body().string()).getString("access_token");
    }


}